wl-clipboard-rs
A safe Rust crate for working with the Wayland clipboard.
This crate is intended to be used by terminal applications, clipboard managers and other
utilities which don't spawn Wayland surfaces (windows). If your application has a window,
please use the appropriate Wayland protocols for interacting with the Wayland clipboard
(wl_data_device
from the core Wayland protocol, the primary_selection
protocol for the
primary selection), for example via the
smithay-clipboard crate.
The protocol used for clipboard interaction is data-control
from
wlroots. When using the regular clipboard, the
compositor must support the first version of the protocol. When using the "primary" clipboard,
the compositor must support the second version of the protocol (or higher).
For example applications using these features, see src/bin/wl_copy.rs
and
src/bin/wl_paste.rs
which implement terminal apps similar to
wl-clipboard or src/bin/wl_clip.rs
which
implements a Wayland version of xclip
.
The Rust implementation of the Wayland client is used by default; use the native_lib
feature
to link to libwayland-client.so
for communication instead. A dlopen
feature is also
available for loading libwayland-client.so
dynamically at runtime rather than linking to it.
The code of the crate itself (and the code of the example utilities) is 100% safe Rust. This doesn't include the dependencies.
Examples
Copying to the regular clipboard:
use ;
let opts = new;
opts.copy?;
Pasting plain text from the regular clipboard:
use Read;
use ;
let result = get_contents;
match result
Checking if the "primary" clipboard is supported (note that this might be unnecessary depending on your crate usage, the regular copying and pasting functions do report if the primary selection is unsupported when it is requested):
use ;
match is_primary_selection_supported
Included terminal utilities
wl-paste
: implementswl-paste
from wl-clipboard.wl-copy
: implementswl-copy
from wl-clipboard.wl-clip
: a Wayland version ofxclip
.
Stuff that would be neat to add:
- Utility that mimics
xsel
commandline flags.
License: MIT/Apache-2.0